home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / m68knommu / include / asm / m68360_enet.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  6.3 KB  |  178 lines

  1. /***********************************
  2.  * $Id: m68360_enet.h,v 1.1 2002/03/02 15:01:07 gerg Exp $
  3.  ***********************************
  4.  *
  5.  ***************************************
  6.  * Definitions for the ETHERNET controllers
  7.  ***************************************
  8.  */
  9.  
  10. #ifndef __ETHER_H
  11. #define __ETHER_H
  12.  
  13. #include "quicc_simple.h"
  14.  
  15. /*
  16.  * transmit BD's
  17.  */
  18. #define T_R     0x8000          /* ready bit */
  19. #define E_T_PAD 0x4000          /* short frame padding */
  20. #define T_W     0x2000          /* wrap bit */
  21. #define T_I     0x1000          /* interrupt on completion */
  22. #define T_L     0x0800          /* last in frame */
  23. #define T_TC    0x0400          /* transmit CRC (when last) */
  24.  
  25. #define T_DEF   0x0200          /* defer indication */
  26. #define T_HB    0x0100          /* heartbeat */
  27. #define T_LC    0x0080          /* error: late collision */
  28. #define T_RL    0x0040          /* error: retransmission limit */
  29. #define T_RC    0x003c          /* retry count */
  30. #define T_UN    0x0002          /* error: underrun */
  31. #define T_CSL   0x0001          /* carier sense lost */
  32. #define T_ERROR (T_HB | T_LC | T_RL | T_UN | T_CSL)
  33.  
  34. /*
  35.  * receive BD's
  36.  */
  37. #define R_E     0x8000          /* buffer empty */
  38. #define R_W     0x2000          /* wrap bit */
  39. #define R_I     0x1000          /* interrupt on reception */
  40. #define R_L     0x0800          /* last BD in frame */
  41. #define R_F     0x0400          /* first BD in frame */
  42. #define R_M     0x0100          /* received because of promisc. mode */
  43.  
  44. #define R_LG    0x0020          /* frame too long */
  45. #define R_NO    0x0010          /* non-octet aligned */
  46. #define R_SH    0x0008          /* short frame */
  47. #define R_CR    0x0004          /* receive CRC error */
  48. #define R_OV    0x0002          /* receive overrun */
  49. #define R_CL    0x0001          /* collision */
  50. #define ETHER_R_ERROR (R_LG | R_NO | R_SH | R_CR | R_OV | R_CL)
  51.  
  52.  
  53. /*
  54.  * ethernet interrupts
  55.  */
  56. #define ETHERNET_GRA    0x0080  /* graceful stop complete */
  57. #define ETHERNET_TXE    0x0010  /* transmit error         */
  58. #define ETHERNET_RXF    0x0008  /* receive frame          */
  59. #define ETHERNET_BSY    0x0004  /* busy condition         */
  60. #define ETHERNET_TXB    0x0002  /* transmit buffer        */
  61. #define ETHERNET_RXB    0x0001  /* receive buffer         */
  62.  
  63. /*
  64.  * ethernet protocol specific mode register (PSMR)
  65.  */
  66. #define ETHER_HBC       0x8000    /* heartbeat checking      */
  67. #define ETHER_FC        0x4000    /* force collision         */
  68. #define ETHER_RSH       0x2000    /* receive short frames    */
  69. #define ETHER_IAM       0x1000    /* individual address mode */
  70. #define ETHER_CRC_32    (0x2<<10) /* Enable CRC              */
  71. #define ETHER_PRO       0x0200    /* promiscuous             */
  72. #define ETHER_BRO       0x0100    /* broadcast address       */
  73. #define ETHER_SBT       0x0080    /* stop backoff timer      */
  74. #define ETHER_LPB       0x0040    /* Loop Back Mode          */
  75. #define ETHER_SIP       0x0020    /* sample input pins       */
  76. #define ETHER_LCW       0x0010    /* late collision window   */
  77. #define ETHER_NIB_13    (0x0<<1)  /* # of ignored bits 13    */
  78. #define ETHER_NIB_14    (0x1<<1)  /* # of ignored bits 14    */
  79. #define ETHER_NIB_15    (0x2<<1)  /* # of ignored bits 15    */
  80. #define ETHER_NIB_16    (0x3<<1)  /* # of ignored bits 16    */
  81. #define ETHER_NIB_21    (0x4<<1)  /* # of ignored bits 21    */
  82. #define ETHER_NIB_22    (0x5<<1)  /* # of ignored bits 22    */
  83. #define ETHER_NIB_23    (0x6<<1)  /* # of ignored bits 23    */
  84. #define ETHER_NIB_24    (0x7<<1)  /* # of ignored bits 24    */
  85.  
  86. /*
  87.  * ethernet specific parameters
  88.  */
  89. #define CRC_WORD 4          /* Length in bytes of CRC */               
  90. #define C_PRES   0xffffffff /* preform 32 bit CRC */
  91. #define C_MASK   0xdebb20e3 /* comply with 32 bit CRC */       
  92. #define CRCEC    0x00000000
  93. #define ALEC     0x00000000
  94. #define DISFC    0x00000000
  95. #define PADS     0x00000000
  96. #define RET_LIM  0x000f     /* retry 15 times to send a frame before interrupt */
  97. #define ETH_MFLR 0x05ee     /* 1518 max frame size */
  98. #define MINFLR   0x0040     /* Minimum frame size 64 */
  99. #define MAXD1    0x05ee     /* Max dma count 1518 */
  100. #define MAXD2    0x05ee
  101. #define GADDR1   0x00000000 /* Clear group address */  
  102. #define GADDR2   0x00000000
  103. #define GADDR3   0x00000000    
  104. #define GADDR4   0x00000000    
  105. #define P_PER    0x00000000 /*not used */              
  106. #define IADDR1   0x00000000 /* Individual hash table not used */       
  107. #define IADDR2   0x00000000
  108. #define IADDR3   0x00000000    
  109. #define IADDR4   0x00000000            
  110. #define TADDR_H  0x00000000 /* clear this regs */              
  111. #define TADDR_M  0x00000000            
  112. #define TADDR_L  0x00000000            
  113.  
  114. /*       SCC Parameter Ram */
  115. #define RFCR    0x18 /* normal operation */
  116. #define TFCR    0x18 /* normal operation */
  117. #define E_MRBLR 1518 /* Max ethernet frame length */
  118.  
  119. /*
  120.  * ethernet specific structure
  121.  */
  122. typedef union {
  123.         unsigned char b[6];
  124.         struct {
  125.             unsigned short high;
  126.             unsigned short middl;
  127.             unsigned short low;
  128.         } w;
  129. } ETHER_ADDR;
  130.  
  131. typedef struct {
  132.     int        max_frame_length;
  133.     int        promisc_mode;
  134.     int        reject_broadcast;
  135.     ETHER_ADDR phys_adr;
  136. } ETHER_SPECIFIC;
  137.  
  138. typedef struct {
  139.     ETHER_ADDR     dst_addr;
  140.     ETHER_ADDR     src_addr;
  141.     unsigned short type_or_len;
  142.     unsigned char  data[1];
  143. } ETHER_FRAME;
  144.  
  145. #define MAX_DATALEN 1500
  146. typedef struct {
  147.     ETHER_ADDR     dst_addr;
  148.     ETHER_ADDR     src_addr;
  149.     unsigned short type_or_len;
  150.     unsigned char  data[MAX_DATALEN];
  151.     unsigned char  fcs[CRC_WORD];
  152. } ETHER_MAX_FRAME;
  153.  
  154.  
  155. /*
  156.  * Internal ethernet function prototypes
  157.  */
  158. void        ether_interrupt(int scc_num);
  159. /* mleslie: debug */
  160. /* static void ethernet_rx_internal(int scc_num); */
  161. /* static void ethernet_tx_internal(int scc_num); */
  162.  
  163. /*
  164.  * User callable routines prototypes (ethernet specific)
  165.  */
  166. void ethernet_init(int                       scc_number,
  167.                    alloc_routine             *alloc_buffer,
  168.                    free_routine              *free_buffer,
  169.                    store_rx_buffer_routine   *store_rx_buffer,
  170.                    handle_tx_error_routine   *handle_tx_error,
  171.                    handle_rx_error_routine   *handle_rx_error,
  172.                    handle_lost_error_routine *handle_lost_error,
  173.                    ETHER_SPECIFIC            *ether_spec);
  174. int  ethernet_tx(int scc_number, void *buf, int length);
  175.  
  176. #endif
  177.  
  178.